/*
 * tetris.h
 *
 *  Created on: 18.09.2011
 *      Author: Erik Wagner
 */

#ifndef TETRIS_H_
#define TETRIS_H_

/*
 * Strukutr für einen Punkt mit den Variablen "row" und "column"
 */
typedef struct {
	char row;
	char column;
} point;

/*
 * Struktur für eine tetrisFigure mit 4 Punkten (p1 bis p4)
 * und einem center-punkt
 */
typedef struct {
	point center;
	point p1;
	point p2;
	point p3;
	point p4;
} tetrisFigure;

tetrisFigure createI(void);

tetrisFigure createJ(void);

tetrisFigure createL(void);

tetrisFigure createO(void);

tetrisFigure createS(void);

tetrisFigure createT(void);

tetrisFigure createZ(void);

tetrisFigure createRandomFigure(void);

tetrisFigure rotate(tetrisFigure);

point rotatePoint(point, point);

tetrisFigure moveDown(tetrisFigure);

tetrisFigure moveRight(tetrisFigure);

tetrisFigure moveLeft(tetrisFigure);

char canRotate(tetrisFigure);

char canMoveDown(tetrisFigure);

char canMoveLeft(tetrisFigure);

char canMoveRight(tetrisFigure);

void setPoint(unsigned char, unsigned char);

char isPointSet(unsigned char, unsigned char);

char cleanFullLanes(void);

void tetris(void);

#endif /* TETRIS_H_ */
